

#include "gpio_extern.h"

uint8_t gpioa_state;
uint8_t gpiob_state;
uint8_t gpiob_0_state;
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {

    if (GPIO_Pin == GPIO_PIN_0) {
        onGPIOSwap_0(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_0));
        return;
    }
    if (GPIO_Pin == GPIO_PIN_1) {
        onGPIOSwap_1(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_1));
        return;
    }
    if (GPIO_Pin == GPIO_PIN_2) {
        onGPIOSwap_2(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_2));
        return;
    }
    if (GPIO_Pin == GPIO_PIN_3) {
        onGPIOSwap_3(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_3));
        return;
    }
    if (GPIO_Pin == GPIO_PIN_8) {
        onGPIOSwap_8(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_8));
        return;
    }
    if (GPIO_Pin == GPIO_PIN_12) {
        onGPIOSwap_12(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_12));
        return;
    }
    if (GPIO_Pin == GPIO_PIN_13) {
        onGPIOSwap_13(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_13));
        return;
    }
}
void onGPIOSwap_12(GPIO_PinState sta){
}
void onGPIOSwap_13(GPIO_PinState sta){

}
void cycle_read_GPIOB_0() {
    if ((GPIOB->IDR & 1) > 0) {
        if (gpiob_0_state != 1) {
            gpiob_0_state = 1;
            onGPIOSwap_0_B(GPIO_PIN_SET);
        }
    } else {
        if (gpiob_0_state != 0) {
            gpiob_0_state = 0;
            onGPIOSwap_0_B(GPIO_PIN_RESET);
        }
    }
}

void cycle_read_GPIOB_2() {
    if ((GPIOB->IDR & 1 << 2) > 0) {
        if (gpiob_state != 1) {
            gpiob_state = 1;
            onGPIOSwap_2_B(GPIO_PIN_SET);
        }
    } else {
        if (gpiob_state != 0) {
            gpiob_state = 0;
            onGPIOSwap_2_B(GPIO_PIN_RESET);
        }
    }
}
void cycle_read_GPIOB_1() {
    if ((GPIOB->IDR & 1 << 1) > 0) {
        if (gpiob_state != 1) {
            gpiob_state = 1;
            onGPIOSwap_1_B(GPIO_PIN_SET);
        }
    } else {
        if (gpiob_state != 0) {
            gpiob_state = 0;
            onGPIOSwap_1_B(GPIO_PIN_RESET);
        }
    }
}

void cycle_read_GPIOA_1() {
    if ((GPIOA->IDR & 1 << 1) > 0) {
        if (gpioa_state != 1) {
            gpioa_state = 1;
            onGPIOSwap_1_C(GPIO_PIN_SET);
        }
    } else {
        if (gpioa_state != 0) {
            gpioa_state = 0;
            onGPIOSwap_1_C(GPIO_PIN_RESET);
        }
    }
}